package com.crazyhat.crazyhat;

import java.util.Collections;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

/**
 * 自动代码生成
 */
public class CodeGenerator {
    
    private String url="jdbc:mysql://47.121.191.169:3306/crazyhat";
    private String username="root";
    private String password="20030303yzh";

    private String[] tableNameArray = { 
        "recommend"
    };

    /**
     * mybatis-plus自动代码生成
     */
    public void generateDBCode() {

        // 使用 FastAutoGenerator 快速配置代码生成器
        FastAutoGenerator
            .create(url, username, password)
            .globalConfig(builder -> {
                builder
                    .author("crazyhat")
                    .outputDir("crazyhat\\src\\main\\java"); // 输出目录
            })
            .packageConfig(builder -> {
                builder.parent("com.crazyhat.crazyhat") // 设置父包名
                    .entity("entity") // 设置实体类包名
                    .mapper("mapper") // 设置 Mapper 接口包名
                    .service("service") // 设置 Service 接口包名
                    .serviceImpl("service.impl") // 设置 Service 实现类包名
                    .controller("controller") // 设置 controller 类包名
                    .pathInfo(Collections.singletonMap(OutputFile.xml,"crazyhat\\src\\main\\resources\\mapper")); //设置xml文件存放路径
            })
            .strategyConfig(builder -> {
                builder.addInclude(tableNameArray) // 设置需要生成的表名
                    .entityBuilder()
                    .enableLombok() // 启用 Lombok
                    .enableTableFieldAnnotation() // 启用字段注解
                    .controllerBuilder()
                    .enableRestStyle(); // 启用 REST 风格
            })
            .templateEngine(new FreemarkerTemplateEngine()) // 使用 Freemarker 模板引擎
            .execute(); // 执行生成
    }

    // public static void main(String[] args) {
    //     new CodeGenerator().generateDBCode();
    // }
}
